package thinking.generics;

import java.util.ArrayList;
import java.util.List;

/**
 * 子类型和超类型的边界
 */
public class GenericWriting {
    static <T> void writeExact(List<T> list, T item) {
        list.add(item);
    }
    static List<Apple> apples = new ArrayList<>();
    static List<Fruit> fruits = new ArrayList<>();
    static void f1(){
        writeExact(apples, new Apple());
    }
    static <T> void writeWithWildCard(List<? super T> list, T item) {
        list.add(item);
    }
    static void f2() {
        writeWithWildCard(apples, new Apple());
        writeWithWildCard(fruits, new Apple());
    }
    public static void main(String[] args) {
        f1();
        f2();
    }
}
